home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / oberon / jacob-v0.1 / jacob-v0 / jacob / lib / Lib.ob2 < prev    next >
Encoding:
Text File  |  1996-04-04  |  2.5 KB  |  82 lines

  1. MODULE Lib;
  2. (** Inspired by TopSpeed Modula-2 library module Lib *)
  3. IMPORT Out,SL:=SysLib;
  4.  
  5. TYPE PROC* = SL.ExitProcT;
  6.  
  7. (************************************************************************************************************************)
  8. PROCEDURE FatalError*(s:ARRAY OF CHAR);
  9. BEGIN (* FatalError *)
  10.  Out.StrLn(s); 
  11.  HALT(1); 
  12. END FatalError;
  13.  
  14. (************************************************************************************************************************)
  15. PROCEDURE ParamCount*():LONGINT; 
  16. BEGIN (* ParamCount *)
  17.  RETURN SL.argc; 
  18. END ParamCount;
  19.  
  20. (************************************************************************************************************************)
  21. PROCEDURE ParamStr*(VAR s:ARRAY OF CHAR; i:LONGINT);
  22. BEGIN (* ParamStr *)
  23.  IF (0<=i) & (i<SL.argc) THEN 
  24.     COPY(SL.argv[i]^,s); 
  25.  ELSE
  26.     s[0]:=0X; 
  27.  END; (* IF *)
  28. END ParamStr;
  29.  
  30. (************************************************************************************************************************)
  31. PROCEDURE EnvironmentFind*(name:ARRAY OF CHAR; VAR result:ARRAY OF CHAR);
  32. VAR i,j,dst:LONGINT; entry:SL.stringP; c:CHAR; 
  33. BEGIN (* EnvironmentFind *)
  34.  i:=0; 
  35.  WHILE SL.env[i]#NIL DO
  36.   entry:=SL.env[i]; j:=0; 
  37.   LOOP
  38.    IF (j>=LEN(name)) OR (name[j]=0X) THEN 
  39.       IF entry[j]='=' THEN 
  40.          INC(j); dst:=0; 
  41.      LOOP
  42.       IF dst>=LEN(result) THEN result[LEN(result)-1]:=0X; EXIT; END; (* IF *)
  43.           c:=entry[j]; INC(j); 
  44.       result[dst]:=c; INC(dst); 
  45.       IF c=0X THEN EXIT; END; (* IF *)
  46.          END; (* LOOP *)
  47.          RETURN;
  48.       END; (* IF *)
  49.       EXIT; 
  50.    END; (* IF *)
  51.    
  52.    c:=entry[j]; 
  53.    IF (c='=') OR (c=0X) OR (c#name[j]) THEN EXIT; END; (* IF *)
  54.    INC(j); 
  55.   END; (* LOOP *)
  56.   INC(i); 
  57.  END; (* WHILE *)
  58.  
  59.  result[0]:=0X; 
  60. END EnvironmentFind;
  61.  
  62. (************************************************************************************************************************)
  63. PROCEDURE RANDOM*(range:LONGINT):LONGINT; 
  64. BEGIN (* RANDOM *)              
  65.  RETURN SL.random() MOD range; 
  66. END RANDOM;
  67.  
  68. (************************************************************************************************************************)
  69. PROCEDURE RANDOMIZE*;
  70. BEGIN (* RANDOMIZE *)
  71.  SL.srandom(SL.time(0)); 
  72. END RANDOMIZE;
  73.  
  74. (************************************************************************************************************************)
  75. PROCEDURE Terminate*(p:PROC; VAR c:PROC);
  76. BEGIN (* Terminate *)                 
  77.  c:=SL.ExitProc; SL.ExitProc:=p; 
  78. END Terminate;
  79.  
  80. (************************************************************************************************************************)
  81. END Lib.
  82.